冒泡排序

  1. 比较数组中两个相邻的元素,如果第一个数比第二个数大或者小,就进行交换。
  2. 每一次比较都会产生一个最大或最小的数。
  3. 下一轮可以少进行一次排序。

需要两层循环,外层为冒泡次数(数据数-1),里层挨个进行对比。时间复杂度O(n2)。

public static int[] sort(int[] array){
  // 尝试减少没有意义的比较
  boolean flag = false;
  if(null == array || array.length == 0){
    return null;
  }
  for (int i = 0; i < array.length - 1; i++) {
    flag = false; 
    for (int j = 0; j < array.length - i - 1; j++) {
      if (array[j] > array[j + 1]) {
        int tmp = array[j];
        array[j] = array[j + 1];
        array[j + 1] = tmp;
        flag = true;
      }
    }
    if(!flag){
      break;
    }
  }

  return array;
}
Copyright © rootwhois.cn 2021-2022 all right reserved,powered by GitbookFile Modify: 2023-03-05 10:55:51

results matching ""

    No results matching ""